package com.common.app.data.bean.circle

import android.os.Parcelable
import com.common.base.app.extras.yes
import kotlinx.parcelize.Parcelize

/**
 *
 * 作者：sosou
 *
 * 版本：1.0
 *
 * 创建日期：23/7/2025
 *
 * 描述：
 *
 * 修订历史：
 *
 */
@Parcelize
data class CircleListModel(
    var id:Int=0,//圈子ID
    var image_url: String?="",//封面图URL
    var name: String?="",// 圈子名称
    var description: String?="",//圈子描述
    var is_leader:Boolean=false,//当前用户是否为圈子管理员
    var member_count:Int=0,//成员数量
    var leader_id: Int =0,//群主ID
) : Parcelable

@Parcelize
data class CircleDetailModel(
    var id:Int=0,//圈子ID
    var leader_id: Int =0,//群主ID
    var image_url: String?="",//
    var name: String?="",//圈子名称
    var description: String?="",//圈子描述
    var created_at: String?="",//
    var is_leader:Boolean=false,//
    var member_count:Int=0,//成员数量
    var member_list:List<CircleDetailMemberListBean>? =null,//成员列表（最多10条）
) : Parcelable


@Parcelize
data class CircleDetailMemberListBean(
    var id:Int=0,//
    var name: String?="",//成员昵称
    var description: String?="",//简介
    var avatar_url: String?="",//头像
    var badge_count: Int=0,//勋章总数
    var is_leader: Boolean=false,//是否是圈子持有人/团长
    var join_time: String?="",//加入时间
    var last_online: Long=0,//上一次在线时间
    var is_online: Boolean=false,//是否此时在线
    var like_count: Long=0,//点赞总数
    var is_liked: Boolean=false,//是否已点赞
    var nickname: String?="",//成员昵称
    var sex: Int=0,//性别
    var user_id: Int=0,//用户ID
) : Parcelable

@Parcelize
data class CircleMemberListModel(
    var total:Int=0,//总成员数
    var members:List<CircleDetailMemberListBean>? =null,//全部成员列表
) : Parcelable

@Parcelize
data class CircleTaskModel(
    var taskinfo:CircleTaskInfoBean? =null,
) : Parcelable

@Parcelize
data class CircleTaskInfoBean(//任务基础信息
    var circle_id:Int=0,//圈子ID
    var created_at: String?="",//创建时间
    var cycle: String?="",//任务周期天数
    var days_req: String?="",//完成天数要求
    var is_loop: Boolean=false,//是否循环任务
    var start_time: Long =0,//开始时间，毫秒时间戳
    var task_id: String?="",//任务ID
    var updated_at: String?="",//更新时间「

    var start_date: Long =0,
    var end_date: Long =0,
    var metric_value: Number=0,//每天所需指标量 (距离km)
) : Parcelable

@Parcelize
data class CircleTaskMetricBean(//任务指标信息
    var end_date: String?="",//结束日期 (MM-DD)
    var metric_unit: String?="",//指标单位
    var metric_value: Number=0,//每天所需指标量 (距离km)
    var start_date: String?="",//开始日期 (MM-DD)
) : Parcelable

@Parcelize
data class CirclesRankModel(
    var my_ranking: CirclesRankMyRankingBean?=null,//我的排名信息
    var rankings: List<CirclesRankMyRankingBean>?= null,//排行榜列表
) : Parcelable

@Parcelize
data class CirclesRankMyRankingBean(//我的排名信息
    var avatar_url: String?="",//头像URL
    var rank: Int=0,//排名
    var score: Number=0,//分数（打卡天数/距离等）
    var sex: Int=0,//性别
    var user_id: Int=0,//用户ID
    var user_name: String?="",//用户昵称
    var badge_list: List<String>?= null,//勋章列表（最多4个）
) : Parcelable

@Parcelize
data class CirclesMedalModel(//
    var id: Int=0,//勋章系列ID
    var name: String?="",//勋章系列名称
    var description: String?="",//勋章系列描述
    var progress: Int=0,//当前进度值
    var current_level: Int=0,//当前已达成的等级
    var unit: String?="",//进度数值单位
    var badges:List<CirclesMedalBadgesBean>? =null,//该类别下的勋章系列列表
    var isShowOut:Boolean = false //非后台提供，APP自用
) : Parcelable{
    fun getProgressHint():String{
        var mProgressHint = ""
        badges?.forEach {
            (current_level == it.level).yes {
                mProgressHint = "$progress/${it.require}$unit"
            }
            return@forEach

        }
        return mProgressHint
    }

    fun getCurBadge():CirclesMedalBadgesBean?{
        return badges?.lastOrNull { it.is_show }
    }

    /**
     * 获取按level升序排序后的badges数组
     * @return 按level升序排序的badges列表
     */
    fun getSortedBadgesByLevel(): List<CirclesMedalBadgesBean>? {
        return badges?.sortedBy { it.level }
    }
}

@Parcelize
data class CirclesMedalBadgesBean(//
    var id: Int=0,//徽章ID，唯一标识符
    var name: String?="",//徽章名称
    var description: String?="",//徽章描述
    var level: Int=0,//徽章等级
    var active_url: String?="",//已激活状态的徽章图片URL
    var unactive_url: String?="",//未激活状态的徽章图片URL 暂时没用
    var require: Int=0,//获得徽章所需的条件值
    var is_achieved: Boolean=false,//是否已获得该徽章
    var is_show: Boolean=false,//是否对外展示徽章
    var achieved_at: Long=0,//获得徽章的时间戳，未获得时为空
) : Parcelable

@Parcelize
data class CirclesClickLikeModel(
    var like_count: Long=0,//点赞后的总数
    var is_liked: Boolean=false,//是否已点赞
) : Parcelable

@Parcelize
data class CirclesNotificationsModel(
    var list: List<CirclesNotificationsBean>? = null
) : Parcelable

@Parcelize
data class CirclesNotificationsBean(
    var action_data: String?="",//
    var action_type: String?="",//操作类型："navigate"=页面跳转，"deeplink"=深度链接，"modal"=弹窗
    var category: String?="",//
    var clicked_at: String?="",//
    var content: String?="",//
    var created_at: String?="",//
    var data: String?="",//
    var id: String?="",//
    var is_clicked: String?="",//
    var is_read: String?="",//
    var read_at: String?="",//
    var title: String?="",//
    var type: String?="",//通知类型：参考entity.NotificationType常量
) : Parcelable
